function DateFormat(date, fmt) {
  var o = {
    "M+": date.getMonth() + 1,
    //月份 
    "d+": date.getDate(),
    //日 
    "h+": date.getHours(),
    //小时 
    "m+": date.getMinutes(),
    //分 
    "s+": date.getSeconds(),
    //秒 
    "q+": Math.floor((date.getMonth() + 3) / 3),
    //季度 
    "S": date.getMilliseconds() //毫秒 

  };
  if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));

  for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));

  return fmt;
}
/**
 *  Date 转换 String
 *
 *  @param date   待转换Date
 *  @param format 待转换Date格式 比如yyyy-MM-dd
 *
 *  @return 转换 后的String
 */


function stringConvertFromDate(date, format) {
  return DateFormat(date, format);
}
/**
 *  Date 转换 String
 *
 *  @param date   待转换Date
 *
 *  @return 转换 后的yyyy-MM-dd String
 */


function stringConvert_YMD_FromDate(date) {
  return stringConvertFromDate(date, "yyyy-MM-dd");
}
/**
 *  Date 转换 String
 *
 *  @param date   待转换Date
 *
 *  @return 转换 后的yyyy-MM-dd hh:mm String
 */


function stringConvert_YMDHM_FromDate(date) {
  return stringConvertFromDate(date, "yyyy-MM-dd hh:mm");
}
/**
 *  Date 转换 String
 *
 *  @param date   待转换Date
 *
 *  @return 转换 后的yyyy-MM-dd hh:mm:ss String
 */


function stringConvert_YMDHMS_FromDate(date) {
  return stringConvertFromDate(date, "yyyy-MM-dd hh:mm:ss");
}
/**
 *  Date 转换 String
 *
 *  @param date   待转换Date
 *
 *  @return 转换 后的 hh:mm String
 */


function stringConvert_HM_FromDate(date) {
  return stringConvertFromDate(date, "hh:mm");
} //string to formater data

/**
 *  String 转换 Date
 *
 *  @param string 待转换String
 *  @param format 待转换Date格式 比如yyyy-MM-dd
 *
 *  @return 转换 后的Date
 */


function dateConvertFromString(string, format) {
  var date = new Date(string);
  return date;
} //#pragma mark-- timeStamp to string date

/**
 *  时间戳根据格式转字符串
 *
 *  @param secs   秒数
 *  @param format 格式
 *
 *  @return 格式后时间字符串
 */


function dateWithTimeIntervalSince1970(secs, format) {
  if (secs == 0) {
    return "";
  }

  var date = new Date(secs);
  return stringConvertFromDate(date, format);
}
/**
 *  时间戳根据格式转字符串
 *
 *  @param secs   秒数
 *
 *  @return 格式后时间yyyy-MM-dd字符串
 */


function date_YMD_WithTimeIntervalSince1970(secs) {
  return dateWithTimeIntervalSince1970(secs, "yyyy-MM-dd");
}
/**
 *  时间戳根据格式转字符串
 *
 *  @param secs   秒数
 *
 *  @return 格式后时间yyyy-MM-dd hh:mm字符串
 */


function date_YMDHM_WithTimeIntervalSince1970(secs) {
  return dateWithTimeIntervalSince1970(secs, "yyyy-MM-dd hh:mm");
}
/**
 *  时间戳根据格式转字符串
 *
 *  @param secs   秒数
 *
 *  @return 格式后时间yyyy-MM-dd hh:mm:ss字符串
 */


function date_YMDHMS_WithTimeIntervalSince1970(secs) {
  return dateWithTimeIntervalSince1970(secs, "yyyy-MM-dd hh:mm:ss");
}
/**
 *  时间戳根据格式转字符串
 *
 *  @param secs   秒数
 *
 *  @return 格式后时间hh:mm:ss字符串
 */


function date_HMS_WithTimeIntervalSince1970(secs) {
  return dateWithTimeIntervalSince1970(secs, "hh:mm:ss");
} // #pragma mark-- timeStamp

/**
 *  时间转时间戳
 *
 *  @param date 时间
 *
 *  @return 时间戳
 */


function timeIntervalWithDate(date) {
  if (dateString == undefined || dateString == null) {
    return 0;
  }

  return date.getMilliseconds;
}
/**
 *  时间字符串转时间戳
 *
 *  @param date 时间
 *
 *  @return 时间戳
 */


function timeIntervalWithDateString(dateString) {
  if (dateString == undefined || dateString == null || dateString == "") {
    return 0;
  }

  return Date.parse(new Date(dateString));
}
/**
 *  时间戳转Date
 *
 *  @param interval 时间戳
 *
 *  @return 时间Date
 */


function dateWithTimeStamp(interval) {
  return new Date(interval);
}
/**
 *  当前时间时间戳字符串
 *
 *  @return 当前时间时间戳字符串
 */


function nowTimeStampString() {
  return new Date().getMilliseconds() + "";
} // /**
//  * 数据转化,如果是一位数字，则在数字前加 0
//  */
// function formatNumber(n) {
//   n = n.toString()
//   return n[1] ? n : '0' + n
// }


module.exports = {
  DateFormat: DateFormat,
  stringConvertFromDate: stringConvertFromDate,
  //Date 转换 String
  stringConvert_YMD_FromDate: stringConvert_YMD_FromDate,
  // Date 转换 String
  stringConvert_YMDHM_FromDate: stringConvert_YMDHM_FromDate,
  // Date 转换 String
  stringConvert_YMDHMS_FromDate: stringConvert_YMDHMS_FromDate,
  // Date 转换 String
  stringConvert_HM_FromDate: stringConvert_HM_FromDate,
  // Date 转换 String
  dateConvertFromString: dateConvertFromString,
  //String 转换 Date
  dateWithTimeIntervalSince1970: dateWithTimeIntervalSince1970,
  //时间戳根据格式转字符串
  date_YMD_WithTimeIntervalSince1970: date_YMD_WithTimeIntervalSince1970,
  //时间戳根据格式转字符串
  date_YMDHM_WithTimeIntervalSince1970: date_YMDHM_WithTimeIntervalSince1970,
  //时间戳根据格式转字符串
  date_YMDHMS_WithTimeIntervalSince1970: date_YMDHMS_WithTimeIntervalSince1970,
  //时间戳根据格式转字符串
  date_HMS_WithTimeIntervalSince1970: date_HMS_WithTimeIntervalSince1970,
  //时间戳根据格式转字符串
  timeIntervalWithDate: timeIntervalWithDate,
  //时间转时间戳
  timeIntervalWithDateString: timeIntervalWithDateString,
  //时间字符串转时间戳
  dateWithTimeStamp: dateWithTimeStamp,
  //时间戳转Date
  nowTimeStampString: nowTimeStampString //当前时间戳字符串

};